package cn.fuxi2022.auth.service;

import java.util.Map;

/**
 * 微信小程序登录与注册相关业务
 */
public interface AppletsService {

    /**
     * 获取 accessToken
     */
    String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";

    /**
     * 获取手机号
     */
    String GET_PHONE_URL = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s";

    /**
     * 获取用户的 openId 和 unionId
     */
    String GET_OPENID_UNIONID_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code";

    /**
     * 请求微信服务器，小程序全局唯一后台接口调用凭据
     */
    String getAccessToken();

    /**
     * 根据微信小程序获取的code换取手机号
     *
     * @param code 微信小程序的code
     * @return 手机号
     */
    String getPhoneByCode(String code);

    /**
     * 给指定手机号发送验证码
     * @param phone 手机号
     */
    void getCaptcha(String phone);

    /**
     * 登录方法
     * @param phone 手机号
     * @param captcha 正确的验证码
     * @param code 微信登录验证码
     */
    Map<String,Object> login(String phone, String captcha,String code);

    /**
     * 获取指定用户的 openid 和 unionid
     * @param code 微信登录验证码
     */
    Map<String,String> getOpenidAndUnionidByApplets(String code);
}
